home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / modules.lha / modules / lib / powerd_ppc.m < prev    next >
Encoding:
Text File  |  2002-06-01  |  7.2 KB  |  188 lines

  1. OPT    LINK='powerd_ppc.lib',LINK='ppcmath.lib',CPU=603
  2.  
  3. // String/EString functions ////////////
  4. //RPROC DupEStr(a0:PTR TO CHAR)(PTR TO CHAR)
  5. //RPROC DupEStrPooled(a0:PTR,a1:PTR TO CHAR)(PTR TO CHAR)
  6. //RPROC DupStr(a0:PTR TO CHAR)(PTR TO CHAR)
  7. //RPROC DupStrPooled(a0:PTR,a1:PTR TO CHAR)(PTR TO CHAR)
  8. RPROC EStrAdd(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(PTR TO CHAR)
  9. RPROC EStrCopy(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(PTR TO CHAR)
  10. RPROC EStringF(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=NIL:LIST OF LONG)(PTR TO CHAR)
  11. RPROC EStrLen(r3:PTR TO CHAR)(LONG)='lhz\tr3,-2(r3)'
  12. RPROC EStrMax(r3:PTR TO CHAR)(LONG)='lhz\tr3,-4(r3)'
  13. RPROC HiChar(r3:LONG)(LONG)
  14. //RPROC InStr(a0:PTR TO CHAR,a1:PTR TO CHAR,d0=0:LONG)(LONG)
  15. //RPROC MidEStr(a0:PTR TO CHAR,a1:PTR TO CHAR,d1,d0)(PTR TO CHAR)
  16. //RPROC MidStr(string:PTR TO CHAR,str:PTR TO CHAR,start,length)(PTR TO CHAR)
  17. RPROC IsAlpha(r3:LONG)(BOOL)
  18. RPROC IsBin(r3:LONG)(BOOL)
  19. RPROC IsHex(r3:LONG)(BOOL)
  20. RPROC IsNum(r3:LONG)(BOOL)
  21. RPROC LoChar(r3:LONG)(LONG)
  22. RPROC LowerStr(r3:PTR TO CHAR)(PTR TO CHAR)
  23. //RPROC NewEStr(d0:UWORD)(PTR TO CHAR)
  24. RPROC OStrCmp(a:PTR TO CHAR,b:PTR TO CHAR,length=-1)(LONG)
  25. RPROC OStrCmpNC(a:PTR TO CHAR,b:PTR TO CHAR,length=-1)(LONG)
  26. //RPROC ReadEStr(fh:BPTR,estr:PTR TO CHAR)(LONG)
  27. //RPROC ReadStr(fh:BPTR,str:PTR TO CHAR)(LONG)
  28. //RPROC ReEStr(a0:PTR TO CHAR)
  29. //RPROC RemEStr(a1:PTR TO CHAR)
  30. //RPROC RemStr(a1:PTR TO CHAR)
  31. //RPROC RightEStr(dstr:PTR TO CHAR,sstr:PTR TO CHAR,length)(PTR TO CHAR)
  32. //RPROC RightStr(dstr:PTR TO CHAR,sstr:PTR TO CHAR,length)(PTR TO CHAR)
  33. //RPROC SetEStr(a0:PTR TO CHAR,d0:LONG)
  34. RPROC StrAdd(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(BOOL)
  35. RPROC StrCmp(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(BOOL)
  36. RPROC StrCmpNC(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(BOOL)
  37. RPROC StrCopy(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1)(BOOL)
  38. RPROC StringF(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=NIL:LIST OF LONG)(PTR TO CHAR)
  39. RPROC StrLen(r3:PTR TO CHAR)(LONG)
  40. RPROC TrimStr(r3:PTR TO CHAR)(PTR TO CHAR)
  41. RPROC UpperStr(r3:PTR TO CHAR)(PTR TO CHAR)
  42.  
  43. // added in v0.19alpha7:
  44. RPROC CStrCmp(stra:PTR TO CHAR,strb:PTR TO CHAR)(L)
  45.  
  46. // List functions
  47.  
  48. // Math functions //////////////////////
  49. RPROC Abs(r3:L)(L)
  50. RPROC And(r3:L,r4:L)(L)='and\tr3,r4,r3'
  51. RPROC NAnd(r3:L,r4:L)(L)='nand\tr3,r4,r3'
  52. RPROC BitCount(r3:L)(L)
  53. RPROC BitSize(r3:L)(L)
  54. RPROC EOr(r3:L,r4:L)(L)='xor\tr3,r4,r3'
  55. RPROC XOr(r3:L,r4:L)(L)='xor\tr3,r4,r3'
  56. RPROC HiBit(r3:L)(L)
  57. RPROC LoBit(r3:L)(L)
  58. RPROC Or(r3:L,r4:L)(L)='or\tr3,r4,r3'
  59. RPROC Max(r3:L,r4:L)(L)
  60. RPROC Min(r3:L,r4:L)(L)
  61. RPROC NOr(r3:L,r4:L)(L)='or\tr3,r4,r3'
  62. RPROC Neg(r3:L)(L)='neg\tr3,r3'
  63. RPROC Not(r3:L)(L)='not\tr3,r3'
  64. RPROC Rol(r3:L,r4:L)(L)='rotlw\tr3,r3,r4,0,31'
  65. RPROC Ror(r3:L,r4:L)(L)='neg\tr4,r4\n\trotlw\tr3,r3,r4,0,31'
  66. RPROC Shl(r3:L,r4:L)(L)='slw\tr3,r3,r4'
  67. RPROC Shr(r3:L,r4:L)(L)='srw\tr3,r3,r4'
  68. RPROC Sign(r3:L)(L)
  69. RPROC Mod(r3:L,r4:L)(L)='divw\tr0,r3,r4\n\tmullw\tr0,r0,r4\n\tsubf\tr3,r0,r3'
  70. RPROC Div(r3:L,r4:L)(L)='divw\tr3,r3,r4'
  71. RPROC Mul(r3:L,r4:L)(L)='mulllw\tr3,r3,r4'
  72. RPROC Add(r3:L,r4:L)(L)='add\tr3,r3,r4'
  73. RPROC Sub(r3:L,r4:L)(L)='sub\tr3,r3,r4'
  74.  
  75. // FPU functions ///////////////////////
  76. RPROC Pow(f1:D,f2:D)(D)='bl\t_pow\n\t.extern\t_pow'
  77. RPROC Cos(f1:D)(D)='bl\t_cos\n\t.extern\t_cos'
  78. RPROC Sin(f1:D)(D)='bl\t_sin\n\t.extern\t_sin'
  79. RPROC Tan(f1:D)(D)='bl\t_tan\n\t.extern\t_tan'
  80. RPROC Cosh(f1:D)(D)='bl\t_cosh\n\t.extern\t_cosh'
  81. RPROC Sinh(f1:D)(D)='bl\t_sinh\n\t.extern\t_sinh'
  82. RPROC Tanh(f1:D)(D)='bl\t_tanh\n\t.extern\t_tanh'
  83. RPROC ACos(f1:D)(D)='bl\t_acos\n\t.extern\t_acos'
  84. RPROC ASin(f1:D)(D)='bl\t_asin\n\t.extern\t_asin'
  85. RPROC ATan(f1:D)(D)='bl\t_atan\n\t.extern\t_atan'
  86. RPROC FAbs(f1:D)(D)='fabs\tf1,f1'
  87. RPROC Sqrt(f1:D)(D)='bl\t_sqrt\n\t.extern\t_sqrt'
  88. //RPROC ATanh(f1:D)(D)='bl\t_atanh\n\t.extern\t_atanh'
  89. RPROC Log(f1:D)(D)='bl\t_log10\n\t.extern\t_log10'
  90. RPROC Ln(f1:D)(D)='bl\t_log\n\t.extern\t_log'
  91. //RPROC Log2(f1:D)(D)='bl\t_log2\n\t.extern\t_log2'
  92. //RPROC Int(f1:D)(D)='bl\t_\n\t.extern\t_'
  93. //RPROC Rem(f1:D)(D)='bl\t_\n\t.extern\t_'
  94. RPROC Exp(f1:D)(D)='bl\t_exp\n\t.extern\t_exp'
  95. RPROC FNeg(f1:D)(D)='fneg\tf1,f1'
  96. RPROC FMax(f1:D,f2:D)(D)='fsub\tf0,f1,f2\n\tfsel\tf1,f0,f1,f2'
  97. RPROC FMin(f1:D,f2:D)(D)='fsub\tf0,f1,f2\n\tfsel\tf1,f0,f2,f1'
  98. RPROC F2I(f1:D)(L)='fctiw\tf1,f1\n\tstfd\tf1,-8(r1)\n\tlwz\tr3,-4(r1)'
  99.  
  100. // Intuition support functions /////////
  101. RPROC Mouse()(L)
  102. RPROC MouseX(r3:PTR TO Window)(L)='lha\tr3,14(r3)'
  103. RPROC MouseXY(r3:PTR TO Window)(L,L)='lha\tr4,12(r3)\n\tlha\tr3,14(r3)'
  104. RPROC MouseY(r3:PTR TO Window)(L)='lha\tr3,12(r3)'
  105. RPROC WaitIMessage(r3:PTR TO Window)(L,L,L,L)
  106.  
  107. // Miscellaneous functions /////////////
  108. RPROC CtrlC()(BOOL)
  109. RPROC CtrlD()(BOOL)
  110. RPROC CtrlE()(BOOL)
  111. RPROC CtrlF()(BOOL)
  112.  
  113. RPROC Byte(r3:PTR TO BYTE)(L)='lbz\tr3,0(r3)\n\textsb\tr3,r3'
  114. RPROC Word(r3:PTR TO WORD)(L)='lha\tr3,0(r3)'
  115. RPROC Long(r3:PTR TO LONG)(L)='lwz\tr3,0(r3)'
  116. RPROC UByte(r3:PTR TO BYTE)(L)='lbz\tr3,0(r3)'
  117. RPROC UWord(r3:PTR TO WORD)(L)='lhz\tr3,0(r3)'
  118. RPROC ULong(r3:PTR TO LONG)(L)='lwz\tr3,0(r3)'
  119. RPROC Float(r3:PTR TO FLOAT)(DOUBLE)='lfs\tf1,0(r3)'
  120. RPROC Double(r3:PTR TO DOUBLE)(DOUBLE)='lfd\tf1,0(r3)'
  121.  
  122. RPROC PutByte(r3:PTR TO BYTE,r4:L)='stb\tr4,0(r3)'
  123. RPROC PutWord(r3:PTR TO WORD,r4:L)='sth\tr4,0(r3)'
  124. RPROC PutLong(r3:PTR TO LONG,r4:LONG)='stw\tr4,0(r3)'
  125. RPROC PutFloat(r3:PTR TO LONG,f1:DOUBLE)='stfs\tf1,0(r3)'
  126. RPROC PutDouble(r3:PTR TO LONG,f1:DOUBLE)='stfd\tf1,0(r3)'
  127.  
  128. RPROC ReByte(r3:BYTE)(LONG)='extsb\tr3,r3'
  129. RPROC ReWord(r3:WORD)(LONG)='extsh\tr3,r3'
  130. RPROC ReUByte(r3:UBYTE)(LONG)='andi.\tr3,r3,0xff'
  131. RPROC ReUWord(r3:UWORD)(LONG)='andi.\tr3,r3,0xffff'
  132.  
  133. RPROC Bounds(r3:LONG,r4:LONG,r5:LONG)(LONG)
  134. RPROC Even(r3:LONG)(BOOL)
  135. RPROC Odd(r3:LONG)(BOOL)
  136.  
  137. RPROC Rnd(r3:LONG)(LONG)
  138. RPROC RndQ(r3:LONG)(LONG)
  139.  
  140. EPROC FileLength(name:PTR TO CHAR)(LONG)
  141. EPROC KickVersion(minimal:LONG)(BOOL)
  142.  
  143. //RPROC Inp(d1:BPTR)(LONG)
  144. //RPROC Out(d1:BPTR,d2:LONG)
  145.  
  146. RPROC RealStr(r3:PTR TO UBYTE,f1:DOUBLE,r4=1)(PTR TO UBYTE)
  147. RPROC RealEStr(r3:PTR TO UBYTE,f1:DOUBLE,r4=1)(PTR TO UBYTE)
  148. RPROC RealVal(r3:PTR TO UBYTE,r4=0)(DOUBLE,LONG)
  149. EPROC Val(s:PTR TO UBYTE,n=0)(LONG,LONG)
  150.  
  151. RPROC AllocVecPooled(a0:APTR,d0:LONG)(PTR)
  152. RPROC FreeVecPooled(a0:APTR,a1:PTR)
  153. RPROC SizePooled(r3:PTR)(LONG)='lwz\tr3,0(r3)'
  154. RPROC AllocVecPooledPPC(a0:APTR,d0:LONG)(PTR)
  155. RPROC FreeVecPooledPPC(a0:APTR,a1:PTR)
  156. RPROC SizePooledPPC(r3:PTR)(LONG)='lwz\tr3,0(r3)'
  157.  
  158. EPROC New(length)(PTR)
  159. EPROC NewR(length)(PTR)
  160. EPROC NewM(length,flags)(PTR)
  161. EPROC Dispose(memptr)
  162.  
  163. RPROC Raise(d0=NIL:LONG,d1=NIL:LONG)
  164. EDEF    exception,exceptioninfo
  165.  
  166. EPROC OpenW(l,t,w,h,i,f,n=NIL,s=NIL,st=1,g=NIL,tags=NIL:PTR TO TagItem)(PTR TO Window)
  167. EDEF    stdrast,stdrast_coloura
  168. EPROC OpenS(w,h,d,t=0,n=NIL,tags=NIL:PTR TO TagItem)(PTR TO Screen)
  169. EPROC CloseW(w:PTR TO Window)
  170. EPROC CloseS(s:PTR TO Screen)
  171.  
  172. //RPROC SetStdRast(d1:PTR TO RastPort)(PTR TO RastPort)
  173. //RPROC Colour(d0,d1=0)
  174. //RPROC Line(d0,d1,d2,d3,d4=-1)
  175. //RPROC Plot(d0,d1,d2=-1)
  176. //RPROC Box(d0,d1,d2,d3,d4=-1)
  177. //RPROC Ellipse(d0,d1,d2,d3,d4=-1)
  178. //RPROC Circle(d0,d1,d2,d3=-1)
  179. //RPROC IBox(x,y,w,h,c=-1)
  180. //RPROC TextF(x,y,fmt,args)
  181.  
  182. // Quoted Expression functions /////////
  183. EPROC Eval(r3:PTR)(L)
  184. RPROC MapList(r3:PTR TO LONG,r4:PTR TO LONG,r5:PTR TO LONG,r6:LONG,r7:PTR TO LONG)
  185. RPROC ForAll(r3:PTR TO LONG,r4:PTR TO LONG,r5:LONG,r6:PTR TO LONG)(L)
  186. RPROC Exists(r3:PTR TO LONG,r4:PTR TO LONG,r5:LONG,r6:PTR TO LONG)(L)
  187. RPROC SelectList(r3:PTR TO LONG,r4:PTR TO LONG,r5:PTR TO LONG,r6:LONG,r7:PTR TO LONG)(L)
  188.